package utils

import (
	"fmt"
	"os"
	"path"
	"strings"
	"time"
)

// 判断文件夹是否存在
func DirExistOrNot(dirPath string) bool {
	s, err := os.Stat(dirPath)
	if err != nil {
		return false
	}
	return s.IsDir()
}

// 创建文件夹
func CreateDir(dirPath string) bool {
	err := os.MkdirAll(dirPath, 0755)
	return err == nil
}

// 保存文件
func SaveFile(filePath string, bytes []byte) bool {
	err := os.WriteFile(filePath, bytes, 0666)
	return err == nil
}

// 校验文件格式
func VerifyTheFileFormatByFileName(filename string, exts []string) bool {
	fileExt := strings.ToLower(path.Ext(filename))
	return VerifyTheFileFormatByExt(fileExt, exts)
}

// 校验文件格式
func VerifyTheFileFormatByExt(fileExt string, exts []string) bool {
	for _, ext := range exts {
		if fileExt != ext {
			return false
		}
	}
	return true
}

// 根据当前系统时间生成文件名
func GenerateFilenameBySystemDateTime(fileExt string) string {
	return fmt.Sprintf("%s%s", MD5(time.Now().String()), fileExt)
}

// 根据当前系统时间生成文件夹
func GenerateDirPathBySystemDateTime() string {
	return fmt.Sprintf("%d%s/", time.Now().Year(), time.Now().Month())
}
